package table_Mixage;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 *  Player Canal
 *
 *	Description : Classe qui génère le JPanel des canaux.
 *
 *	Contenu : 
 *		-JPanel outils
 *		-JPanel spectrogramme
 *
 * @author Damien Deldon</a>
 * @version 1.0
 */

public class PlayerCanal extends JPanel {

	private static final long serialVersionUID = 7167358696925032886L;
	
	Dessin graph;
	private Piste piste;
	private int i = 0;
	private static int  freq;
	private JPanel panelTools = new JPanel();
	public PlayerCanal(Piste piste, Boolean addCanal){
		
		BorderLayout panelCanaux = new BorderLayout(10,0);
		this.setLayout(panelCanaux);
		this.piste = piste;
		
		if (addCanal){
			i = piste.getNbCanaux()-1;
		}
		if (piste != null){
			if (i < piste.getNbCanaux()-1){
				i = i + 1;
			}
		}			
			
	//Panel outils
		GridLayout layout =new GridLayout(2,1);
		layout.setHgap(5);
		layout.setVgap(5);
		panelTools.setLayout(layout);
			
		
	//Bouton Copier
		JButton copy = new JButton(new ImageIcon(getClass().getResource("/copy.jpg")));
		copy.setToolTipText("Copier sélection");
		copy.setPreferredSize(new Dimension(40,40));
		copy.addActionListener(new CopierListener());
		panelTools.add(copy);
			
	//Bouton Remplacer		
		JButton remplacer = new JButton(new ImageIcon(getClass().getResource("/coller.jpg")));
		remplacer.setToolTipText("Remplacer par sélection");
		remplacer.setPreferredSize(new Dimension(40,40));
		remplacer.addActionListener(new CollerListener());
		panelTools.add(remplacer);
		
	//Bouton Ajouter		
		JButton ajouter = new JButton(new ImageIcon(getClass().getResource("/add.jpg")));
		ajouter.setToolTipText("Ajouter la sélection");
		ajouter.setPreferredSize(new Dimension(40,40));
		ajouter.addActionListener(new AjouterListener());
		panelTools.add(ajouter);
		
	//Bouton Supprimer
		JButton delete = new JButton(new ImageIcon(getClass().getResource("/supprimer.jpg")));
		delete.setToolTipText("Supprimer la sélection");
		delete.setPreferredSize(new Dimension(40,40));
		delete.addActionListener(new DeleteListener());
		panelTools.add(delete);
			
		this.add(panelTools,BorderLayout.WEST);
				
	//Spectrograme
		this.graph = new Dessin();
		this.graph.setPreferredSize(new Dimension(500,100));
		this.add(graph,BorderLayout.CENTER);
	}


	//Action bouton Copier
	class CopierListener implements ActionListener {
									
		public void actionPerformed(ActionEvent arg0){
			if(piste!=null){
				int echDebut = graph.positionX*(piste.getNbEch()/500);
				int echFin = graph.positionX2*(piste.getNbEch()/500);
				if (echDebut != echFin){
					piste.getCanal(i).createFragment(echDebut, echFin - echDebut);
					PlayerPiste.tabech = piste.getCanal(i).copier(0);
					freq = piste.getFrequence();
				}
			}else{
				JOptionPane.showMessageDialog(null, "Aucune piste chargée", "Erreur", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
	//Action bouton Remplacer
	class CollerListener implements ActionListener {
		
		public void actionPerformed(ActionEvent arg0){
			if (piste != null){
				int echDebut = graph.positionX*(piste.getNbEch()/500);
				piste.getCanal(i).coller(PlayerPiste.tabech, echDebut,freq);
				piste.refresh();
				for (int i = 0;i < piste.getNbCanaux();i++){
					graph.updateUI();
				}
			}else{
				JOptionPane.showMessageDialog(null, "Aucune piste chargée", "Erreur", JOptionPane.ERROR_MESSAGE);
			}
			
		}
	}
	
	//Action bouton Ajouter
	class AjouterListener implements ActionListener {
			
		public void actionPerformed(ActionEvent arg0){
			if (piste != null){
				int echDebut = graph.positionX*(piste.getNbEch()/500);
				piste.getCanal(i).addFragment(PlayerPiste.tabech, echDebut, freq);
				piste.refresh();
				for (int i = 0;i < piste.getNbCanaux();i++){
					graph.updateUI();
				}
			}else{
				JOptionPane.showMessageDialog(null, "Aucune piste chargée", "Erreur", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
	//Action bouton Supprimer
	class DeleteListener implements ActionListener{
		public void actionPerformed(ActionEvent arg0){
			if (piste != null && graph.positionX != 0 && graph.positionX != graph.positionX2){
				int echDebut = graph.positionX*(piste.getNbEch()/500);
				int echFin = graph.positionX2*(piste.getNbEch()/500);
				piste.getCanal(i).deleteFragment(piste.getCanal(i).createFragment(echDebut, echFin - echDebut));
				for (int i = 0;i < piste.getNbCanaux();i++){
					graph.updateUI();
				}
			}else{
				JOptionPane.showMessageDialog(null, "Aucune piste chargée", "Erreur", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
	public void setPiste(Piste p){
		this.piste = p;
		this.updateUI();
	}
}
